#pragma warning disable 108
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using Cephei;
using Cephei.Core;
using Cephei.Core.Generic;
using Microsoft.FSharp.Core;
using Cephei.QL.Models.Equity;
using Cephei.QL.Models.Shortrate.Onefactormodels;
using Cephei.QL.Instruments;
namespace Cephei.QL.Pricingengines.Vanilla
{
    /// <summary> 
	/// ! This class is pricing a european options under the following processes  \f[ \begin{array}{rcl} dS(t, S)  &=& (r-d) S dt +\sqrt{v} S dW_1 \\ dv(t, S)  &=& \kappa (\theta - v) dt + \sigma \sqrt{v} dW_2 \\ dr(t)     &=& (\theta(t) - a r) dt + \eta dW_3 \\ dW_1 dW_2 &=& \rho dt \\ dW_1 dW_3 &=& 0 \\ dW_2 dW_3 &=& 0 \\ \end{array} \f]  References:  Karel in't Hout, Joris Bierkens, Antoine von der Ploeg, Joe in't Panhuis, A Semi closed-from analytic pricing formula for call options in a hybrid Heston-Hull-White Model.  A. Sepp, Pricing European-Style Options under Jump Diffusion Processes with Stochastic Volatility: Applications of Fourier Transform (<http://math.ut.ee/~spartak/papers/stochjumpvols.pdf>)  \ingroup vanillaengines  \test the correctness of the returned value is tested by reproducing results available in web/literature, testing against QuantLib's analytic Heston and Black-Scholes-Merton Hull-White engine
	/// </summary>
    [Guid ("D5FA6998-90B6-457b-8052-74AA4660BE15"),ComVisible(true)]
	public interface IAnalyticHestonHullWhiteEngine : Cephei.QL.Pricingengines.Vanilla.IAnalyticHestonEngine
	{
		///////////////////////////////////////////////////////////////
        // Methods
        //
        /// <summary> 
		/// 
		/// </summary>
		 IAnalyticHestonHullWhiteEngine Calculate {get;}
        /// <summary> 
		/// 
		/// </summary>
		 IAnalyticHestonHullWhiteEngine Update {get;}
    }   

    /// <summary> 
	/// ! This class is pricing a european options under the following processes  \f[ \begin{array}{rcl} dS(t, S)  &=& (r-d) S dt +\sqrt{v} S dW_1 \\ dv(t, S)  &=& \kappa (\theta - v) dt + \sigma \sqrt{v} dW_2 \\ dr(t)     &=& (\theta(t) - a r) dt + \eta dW_3 \\ dW_1 dW_2 &=& \rho dt \\ dW_1 dW_3 &=& 0 \\ dW_2 dW_3 &=& 0 \\ \end{array} \f]  References:  Karel in't Hout, Joris Bierkens, Antoine von der Ploeg, Joe in't Panhuis, A Semi closed-from analytic pricing formula for call options in a hybrid Heston-Hull-White Model.  A. Sepp, Pricing European-Style Options under Jump Diffusion Processes with Stochastic Volatility: Applications of Fourier Transform (<http://math.ut.ee/~spartak/papers/stochjumpvols.pdf>)  \ingroup vanillaengines  \test the correctness of the returned value is tested by reproducing results available in web/literature, testing against QuantLib's analytic Heston and Black-Scholes-Merton Hull-White engine Factory
	/// </summary>
   	[ComVisible(true)]
    public interface IAnalyticHestonHullWhiteEngine_Factory 
    {
        ///////////////////////////////////////////////////////////////
        // Factory methods
        //
        /// <summary> 
		/// 
		/// </summary>
	    IAnalyticHestonHullWhiteEngine Create (Cephei.QL.Models.Equity.IHestonModel model, Cephei.QL.Models.Shortrate.Onefactormodels.IHullWhite hullWhiteModel, Double relTolerance, UInt64 maxEvaluations);
        /// <summary> 
		/// 
		/// </summary>
	    IAnalyticHestonHullWhiteEngine Create (Cephei.QL.Models.Equity.IHestonModel hestonModel, Cephei.QL.Models.Shortrate.Onefactormodels.IHullWhite hullWhiteModel, Microsoft.FSharp.Core.FSharpOption<UInt64> integrationOrder);
    }
}

